package br.com.virtualsoluction.bo;

import br.com.virtualsoluction.dao.DAOProduto;
import java.util.ArrayList;
import java.util.List;

public class Produto {
 
	private int codigo;
	private String descricao;
	private double precoVenda;
	private int estoque;
	private ItemVenda itemVenda;		
        private List<Produto> produtos = new ArrayList<Produto>();
        private int posicao;

    // Getters and Setters
    public int getCodigo() {
        return codigo;
    }

    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public double getPrecoVenda() {
        return precoVenda;
    }

    public void setPrecoVenda(double precoVenda) {
        this.precoVenda = precoVenda;
    }

    public int getEstoque() {
        return estoque;
    }

    public void setEstoque(int estoque) {
        this.estoque = estoque;
    }

    public ItemVenda getItemVenda() {
        return itemVenda;
    }

    public void setItemVenda(ItemVenda itemVenda) {
        this.itemVenda = itemVenda;
    }

    // Métodos

    public boolean inserir() {
        boolean r;
        DAOProduto dp = new DAOProduto();
        r = dp.insert(this);

        if(r){
          this.getListaProdutos();
          return r;
        }else
            return false;
    }

    public boolean atualizar() {
        boolean r;
        DAOProduto dp = new DAOProduto();
        r = dp.update(this);
        if(r)
            this.getListaProdutos();
        return r;
    }

    public boolean excluir() {
        boolean r;
        DAOProduto dp = new DAOProduto();
        r = dp.delete(this);
        if(r)
            this.getListaProdutos();
        return r;
    }

    public Produto consulta(int id){
        DAOProduto dp = new DAOProduto();
        return dp.search(id);
    }

    public void getListaProdutos(){
        /* Este método cria uma instancia de DAOProduto
         * que por sua vez, se comunica com o banco de dados
         * e busca todas os Produtos cadastrados e gera uma
         * lista de objetos do tipo Produto
         */

        DAOProduto dp = new DAOProduto();
        this.produtos.clear();
        this.produtos = dp.getList();        
        this.posicao = (this.produtos.size() -1);

        this.codigo = this.produtos.get(this.posicao).codigo;
        this.descricao = this.produtos.get(this.posicao).descricao;
        this.estoque = this.produtos.get(this.posicao).estoque;
        this.precoVenda = this.produtos.get(this.posicao).precoVenda;        
    }

    public Produto getProduto(int index){
        if(this.produtos != null)
            return this.produtos.get(index);
        else
            return null;
    }

    public String listaTodosProdutos(){
        int i;
        String v="";
        for(i=0;i<this.produtos.size();i++)
            v = this.produtos.get(i).getDescricao()+"\n";
        return v;
    }

    public List<Produto> getProdutos(){
        return this.produtos;
    }

   public void anterior(){

        if(this.posicao > 0)
            this.posicao--;
        
        this.codigo     = this.produtos.get(this.posicao).codigo;
        this.descricao  = this.produtos.get(this.posicao).descricao;
        this.estoque    = this.produtos.get(this.posicao).estoque;
        this.precoVenda = this.produtos.get(this.posicao).precoVenda;        
    }

    public void proximo(){
        
        if(this.posicao < (this.produtos.size() -1))
            this.posicao++;
        
        this.codigo     = this.produtos.get(this.posicao).codigo;
        this.descricao  = this.produtos.get(this.posicao).descricao;
        this.estoque    = this.produtos.get(this.posicao).estoque;
        this.precoVenda = this.produtos.get(this.posicao).precoVenda;      
    }
}